package org.example.util.file;

import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

/**
 * @auther admin闫
 * @Descriptopn 图片工具类
 * @date 2024/4/6 4:15
 */
public class ImageUtil {

    /**
     * 调整图片大小
     * @param originalImage 图片流
     * @param targetWidth 变化宽度
     * @param targetHeight 变化高度
     * @return 修改图片流
     */
    public static BufferedImage resizeImage(BufferedImage originalImage, int targetWidth, int targetHeight) {
        Image resultingImage = originalImage.getScaledInstance(targetWidth, targetHeight, Image.SCALE_SMOOTH);
        BufferedImage outputImage = new BufferedImage(targetWidth, targetHeight, BufferedImage.TYPE_INT_ARGB);
        Graphics2D g = outputImage.createGraphics();
        g.drawImage(resultingImage, 0, 0, null);
        g.dispose();
        return outputImage;
    }

    /**
     * 【抖音封面图分割为三份】
     * @param imageDir 图片地址
     * @param uotFileDir 分割的图片存放位置
     * @throws IOException 图片输出错误
     */
    public static void splitImage3(String imageDir,String uotFileDir) throws IOException {
            // 加载图片
            BufferedImage image = ImageIO.read(new File(imageDir));
            // 获取图片宽度和高度
            int width = image.getWidth();
            int height = image.getHeight();
            // 计算每份的宽度
            int segmentWidth = width / 3;
            // 循环处理每一份
            for (int i = 0; i < 3; i++) {
                // 创建新的缓冲图像
                BufferedImage segment = new BufferedImage(segmentWidth, height, BufferedImage.TYPE_INT_RGB);
                // 绘制当前分段的图像
                for (int x = 0; x < segmentWidth; x++) {
                    for (int y = 0; y < height; y++) {
                        segment.setRGB(x, y, image.getRGB(x + i * segmentWidth, y));
                    }
                }
                // 保存分段的图像
                File output = new File(uotFileDir+"\\segment" + (i + 1) + ".jpg");
                ImageIO.write(segment, "jpg", output);
            }
            System.out.println("分割完成3份完成");
    }
}
